<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Mensaje_lst( $this );

	class Mensaje_lst extends Lst
	{
	function Mensaje_lst( &$oModule )
		{
			$this->Lst ( $oModule );
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'C':
				case 'E':
					$this->aShowColumns = array( 'Asunto' );
					break;
				case 'R':
					$this->aShowColumns = array( 'Fecha', 'ncRotulo', 'Asunto', 'De', 'Para', 'Pr', 'Descripcion' );
					break;
				default:
					if ( $this->aFields['ncCuenta'] == -2  )
					{
						$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Para', 'Pr', 'Fecha', 'Asunto' );
					}
					if ( $this->aFields['ncCuenta'] == -1  )
					{
						$this->aShowColumns = array( 'bEstrella', 'ncRotulo',  'De', 'Pr', 'Fecha', 'Asunto' );
					}
					break;
			}
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Mensaje_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->aFields['ncCuenta'] = getParam('ncCuenta', -1);
			$this->aFields['aRotulo'] = is_array( getParam( 'aRotulo' ) )  ? implode(",", getParam( 'aRotulo' ) ): getParam( 'aRotulo' );
			//
			$this->cField = "ncMensaje[]";
			$this->setSummary( "Esta tabla contiene las Mensajes" );
			if ( $this->aFields['ncCuenta'] == -2  )
			{
				$this->setTitle ( "Bandeja de Salida" );
				$this->aFields['bSalida'] = true;
			}
			if ( $this->aFields['ncCuenta'] == -1  )
			{
				$this->setTitle ( "Bandeja de Entrada" );
			}
			$this->addColumn ( 'Para', 'Receptor', true );
			$this->addColumn ( 'De', 'Emisor', true );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_MENSAJE, 'ncMensaje', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_MENSAJE, 'ncMensaje', 'atMensajeRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM atRotuloMensaje' ) );
			$this->addColumnImageArray( 'Pr', 'ncPrioridad', '', '18px',  array( 1 => "prioridad_1.gif", 2 =>"prioridad_2.gif",  3 =>"prioridad_3.gif" ) );
			$this->addColumnDate ( 'Fecha', 'dEnvio', true );
			$this->addColumn ( 'Asunto', 'cdMensaje' );
			$this->addColumn ( 'Descripcion', '');
			$this->setOrderBy( 'dEnvio', false);

			$this->oFecha = new dateTimeObject();
			$oTab =& $this->setIndex( INDEX_USER, TAB_TOP, 'ncCuenta' );
			$oTab->addTab(  'Local', -1 );
			$cSql = "SELECT ncCuenta, cdCuenta FROM atPersonalCuenta WHERE ncModoLectura = 3 AND ncPersona = " . $this->oModule->oUserSession->getUser();
			$oTab->setMatrix( $this->oDatabase->getMatrix($cSql), false );
			$oTab->addTab(  'Bandeja Salida', -2 );
			$this->setColumnAction ( 'Asunto', VER_MENSAJE, 'ncMensaje', 'ncCuenta=' . $this->aFields['ncCuenta'] . '&amp;bSalida=' . $this->aFields['bSalida'] );
		}
	function makeRowProperties ( $aRow )
		{
			if ( ! $aRow['bLeido'] ) return " style='font-weight: bold;' ";
		}
	function makeColumn ( $aRow , $cField )
		{
			switch( $cField )
			{
				case 'KeyLookUp':
					$cReturn = $aRow['ncMensaje'];
					break;
				case 'Descripcion':
					if ( $this->aFields['ncCuenta'] == -1  || $this->aFields['ncCuenta'] == -2)
					{
						 if ( !$this->aFields['bLeido'] && getParam('bSalida') == false )
						 {
							$this->oDatabase->update("atMensaje", "bLeido", true, "WHERE", "ncMensaje", $this->aFields['ncMensaje'] );
						 }
						$cReturn = $aRow['cDescripcion'];
					}else
					{
						 if ( !$this->aFields['bLeido'] && getParam('bSalida') == false)
						 {
							$this->oRecordset->markRead();
						 }
						$cReturn = $this->oRecordset->getBody();
					}
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function open()
		{
			if ( $this->aFields['ncCuenta'] == -1 ||  $this->aFields['ncCuenta'] == -2 ) return parent::open();
			else 													  return $this->openCuenta();

		}
	function openCuenta()
		{
			$oModBase =& loadModule('base');
			$oModBase->loadLibrary('email');
			$cSql = "SELECT cMailbox, cUsuario, cClave FROM atPersonalCuenta WHERE ncCuenta = " . $this->aFields['ncCuenta']  . " AND ncPersona =  " . $this->oModule->oUserSession->getUser();
			list ( $cMailbox, $cUser, $cPassword )  = $this->oDatabase->getArray($cSql);
			$this->oRecordset =& new Email( $cMailbox, $cUser, $cPassword );
			$this->oPaging->setTotalItems ( $this->oRecordset->count() );
			$this->oRecordset->setPaging( $this->oPaging->getFrom(), $this->oPaging->getLength() );
			if ( $this->aFields['ncMensaje'] ) $oEmail->moveTo( $this->aFields['ncMensaje'] );
			return ( $this->oRecordset ) ? true: false;
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Men.bEstrella, Pri.cdPrioridad, Men.dEnvio, Men.bLeido, Men.dRecepcion, Men.ncMensaje, Men.ncPrioridad, Men.cdMensaje, " . $this->oDatabase->dbConcat( "Emi.cNombre", "' '",  "Emi.cApellido" ) . " as Emisor, Rec.cApellido as Receptor, Men.cDescripcion
												FROM atMensaje as Men
												LEFT JOIN acPrioridad as Pri
															ON Pri.ncPrioridad = Men.ncPrioridad
												JOIN atPersona as Rec
													ON Rec.ncPersona = Men.ncReceptor
												JOIN atPersona as Emi
													ON Emi.ncPersona = Men.ncEmisor";
				$cSql .= armarJoin (" JOIN atMensajeRotulo as MRo ON MRo.ncMensaje = Men.ncMensaje AND MRo.ncRotulo IN ( $aRotulo  ) " , $aRotulo );
			// Arma el Filtro de la Consulta
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray() , 'Men' );
				if ( $this->aFields[bSalida] )
					$this->oWhere->addExpression ( 'Men.ncEmisor', 'Men.ncEmisor = ' . $this->oModule->oUserSession->getUser() );
				else
					$this->oWhere->addExpression ( 'Men.ncReceptor',   'Men.ncReceptor = ' . $this->oModule->oUserSession->getUser() );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( ENVIAR_MENSAJE, $cParametroRegistro, 'I', VENTANA_SECUNDARIA );
			$this->addListAction ( AGREGAR_LLAMADA, $cParametroRegistro, 'I', VENTANA_SECUNDARIA );
			//$this->addListAction ( BUSCAR_EMAIL  );
			$this->addListAction ( CONSULTAR_PERSONALCUENTAS  );
		}
	function makeSelectionActions()
		{
			$this->addSelectionAction ( ELIMINAR_MENSAJE , "ncCuenta=" . $this->aFields['ncCuenta'] );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro =  "ncCuenta=" . $this->aFields['ncCuenta'] . "&amp;ncMensaje=" . $aRow["ncMensaje"];
			if ( !$this->aFields['bSalida']  )
			{
				$this->addRowAction ( RESPONDER_MENSAJE, $cParametroRegistro , '', VENTANA_SECUNDARIA );
				$this->addRowAction ( ELIMINAR_MENSAJE, $cParametroRegistro);
			}
				$this->addRowAction ( CONVERTIR_MENSAJE, $cParametroRegistro , '', VENTANA_SECUNDARIA );
		}
	}
?>
